package com.itheima.java8Time;

import java.time.LocalDate;
import java.time.Month;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAccessor;
import java.time.temporal.TemporalQuery;

/**
 * @ClassName: UtilDayQueryImpl
 * @Description: 获取某一天距离下一个劳动节相隔天数的实现类
 * @author: Yrd
 * @date: 2021-11-10 21:12
 */
public class UtilDayQueryImpl implements TemporalQuery<Long> {
    @Override
    public Long queryFrom(TemporalAccessor temporal) {
        //1.TemporalAccessor 是LocalDate和LocalDateTime的顶级父接口，相当于LocalDate就是这个接口的实现类,
        //将temporal转换为LocalDate进行使用。
        LocalDate now = LocalDate.from(temporal);//now -> 2020-1-17
        //2.封装当年的劳动节时间，年份：now来获取，月份：Month.MAY,日期：1
        LocalDate laborDay = LocalDate.of(now.getYear(), Month.MAY,1);
        //3. 判断当前时间是否已经超过了当年的劳动节，如果超过了当年的劳动节，则laborDay+1年。
        if (now.isAfter(laborDay)){
             laborDay = laborDay.plusYears(1);
        }
        //4.通过ChronoUnit的between方法来计算两个时间点的差额.
        long days = ChronoUnit.DAYS.between(now, laborDay);
        return days;
    }
}











